package com.f21.f21assessoria.model.modalidade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import org.hibernate.engine.spi.CascadingAction;

import com.f21.f21assessoria.enums.DiasDaSemana;

@Entity
public class Turma implements Serializable {

	private static final long serialVersionUID = 1L;
	public static final String MANHA = "Manha";
	public static final String TARDE = "Tarde";
	public static final String NOITE = "Noite";
	@Id
	@GeneratedValue
	private long id;
	private String turno;
	@ElementCollection(fetch=FetchType.LAZY)
	private List<String> diasSemana;
	@Temporal(TemporalType.TIME)
	private Date HoraIn;
	@Temporal(TemporalType.TIME)
	private Date HoraFin;

	@OneToMany(fetch = FetchType.LAZY, mappedBy="turmaProfPK.turma" ,cascade=CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE) 
	private List<TurmaProf> listaProfs;
	@ManyToOne(fetch = FetchType.LAZY)
	@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
	private Modalidade modalidade;
	@OneToMany(fetch = FetchType.LAZY, mappedBy="turmaAlunoPk.turma", cascade= CascadeType.ALL )
	@LazyCollection(LazyCollectionOption.FALSE) 
	private Set<TurmaAluno> listaAlunos;

	
	public Turma() {
		listaAlunos = new HashSet<TurmaAluno>();
		//listaProfs = new HashSet<TurmaProf>();
		listaProfs = new ArrayList<TurmaProf>();
	}
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getTurno() {
		return turno;
	}

	public List<String> getDiasSemana() {
		return diasSemana;
	}

	public Date getHoraIn() {
		return HoraIn;
	}

	public Date getHoraFin() {
		return HoraFin;
	}


	public Modalidade getModalidade() {
		return modalidade;
	}


	public void setTurno(String turno) {
		this.turno = turno;
	}

	public void setDiasSemana(List<String> diasSemana) {
		this.diasSemana = diasSemana;
	}
	
	public void setDiasSemana(DiasDaSemana[] diasSemana) {
		System.out.println("entrou setDiasSemana");
//		this.diasSemana = diasSemana;
	}

	public void setHoraIn(Date horaIn) {
		HoraIn = horaIn;
	}

	public void setHoraFin(Date horaFin) {
		HoraFin = horaFin;
	}


	public void setModalidade(Modalidade modalidade) {
		this.modalidade = modalidade;
	}

	public Set<TurmaAluno> getListaAlunos() {
		return listaAlunos;
	}

	public void setListaAlunos(Set<TurmaAluno> listaAlunos) {
		this.listaAlunos = listaAlunos;
	}

	public List<TurmaProf> getListaProfs() {
		return listaProfs;
	}

	public void setListaProfs(List<TurmaProf> listaProfs) {
		this.listaProfs = listaProfs;
	}

}
